/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package saa.fachada;

import java.util.Date;
import java.util.List;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import saa.dominio.periodo.Avaliacao;
import saa.dominio.periodo.UnidadeDisciplina;
import saa.dominio.periodo.aluno.AvaliacaoAluno;
import saa.dominio.periodo.aluno.UnidadeDisciplinaAluno;

/**
 *
 * @author lobao
 */
@LocalBean
@Stateless
public class OfertaAlunoFachada {

    @PersistenceContext(unitName = "SAAPU")
    private EntityManager em;

    public boolean adicionarAvaliacao(long idUnidadeDisciplina, int peso, Date dataAvaliacao) {
        if (peso < 0 || peso > 100) {
            return false;
        }

        try {

            UnidadeDisciplina unidadeDisciplina = em.find(UnidadeDisciplina.class, idUnidadeDisciplina);

            Avaliacao avaliacao = new Avaliacao(unidadeDisciplina, peso, dataAvaliacao);
            em.persist(avaliacao);
            unidadeDisciplina.addAvaliacao(avaliacao);

            List<UnidadeDisciplinaAluno> unidadesAlunos = em.createNamedQuery("UnidadeDisciplinaAluno.unidade.id", UnidadeDisciplinaAluno.class)
                    .setParameter("id", idUnidadeDisciplina)
                    .getResultList();

            for (UnidadeDisciplinaAluno unidadeAluno : unidadesAlunos) {
                AvaliacaoAluno avaliacaoAluno = new AvaliacaoAluno(avaliacao, unidadeAluno);
                em.persist(avaliacaoAluno);
                unidadeAluno.addAvaliacao(avaliacaoAluno);
            }

            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public List<AvaliacaoAluno> listar(long idUnidadeDisciplinaAluno) {
        return em.createNamedQuery("AvaliacaoAluno.id", AvaliacaoAluno.class)
                .setParameter("id", idUnidadeDisciplinaAluno)
                .getResultList();
    }

}
